//
//  ViewController.swift
//  1-10-闭包
//
//  Created by 范英强 on 16/1/23.
//  Copyright © 2016年 范英强. All rights reserved.
//

import UIKit

class ViewController: UIViewController {
    /**
     什么是block
     他是一个预先定义好的代码块
     在需要他的时候执行
     block 可以作为函数的参数传递 也可以做为返回值
     在block 内部使用self 注意‘循环引用
    */
    override func viewDidLoad() {
        super.viewDidLoad()
        demo3()
        
    }
    //定义闭包格式
    // let 闭包名 = {(外部参数 形参: 类型,....) -> 返回类型 in  执行逻辑}
    func demo3(){
        
        let closure = {(num x: Int) -> Int in
            print("哈哈\(x)")
            return 100
        }
        let result = closure(num: 10)
        print(result)
    }
    
    
    //定义一个简单的闭包
    func demo2(){
        //闭包是一个代码块 那么参数和执行逻辑都放在{}中
        //使用‘in’把 参数和执行逻辑分开
        let colsure = { (num x: Int) in
            print("哈哈\(x)")
        }
        
        colsure(num: 10)
    }
    
    
    func demo1(){
        //内部函数 他的作用域在{}内部
        func haha(num x: Int) -> Int{
            print("哈哈\(x)")
            return 100
        }
        
        let result = haha(num: 10)
        print(result)
    }


}

